package com.ruoyi.ams.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.ams.domain.AmsAssetInfoChange;
import com.ruoyi.ams.domain.vo.ThisYearAssetChangeVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 实物信息变更Mapper接口
 * 
 * @author yfkj
 * @date 2022-05-16
 */@Mapper
public interface AmsAssetInfoChangeMapper extends BaseMapper<AmsAssetInfoChange>
{
    /**
     * 查询实物信息变更
     * 
     * @param assetInfoChangeId 实物信息变更主键
     * @return 实物信息变更
     */
    public AmsAssetInfoChange selectAmsAssetInfoChangeByAssetInfoChangeId(Long assetInfoChangeId);

    /**
     * 查询实物信息变更列表
     * 
     * @param amsAssetInfoChange 实物信息变更
     * @return 实物信息变更集合
     */
    public List<AmsAssetInfoChange> selectAmsAssetInfoChangeList(AmsAssetInfoChange amsAssetInfoChange);

    /**
     * 新增实物信息变更
     * 
     * @param amsAssetInfoChange 实物信息变更
     * @return 结果
     */
    public int insertAmsAssetInfoChange(AmsAssetInfoChange amsAssetInfoChange);

    /**
     * 修改实物信息变更
     * 
     * @param amsAssetInfoChange 实物信息变更
     * @return 结果
     */
    public int updateAmsAssetInfoChange(AmsAssetInfoChange amsAssetInfoChange);

    /**
     * 删除实物信息变更
     * 
     * @param assetInfoChangeId 实物信息变更主键
     * @return 结果
     */
    public int deleteAmsAssetInfoChangeByAssetInfoChangeId(Long assetInfoChangeId);

    /**
     * 批量删除实物信息变更
     * 
     * @param assetInfoChangeIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAmsAssetInfoChangeByAssetInfoChangeIds(Long[] assetInfoChangeIds);

    @Select("SELECT " +
            "count(*) AS num, " +
            "FROM_UNIXTIME(change_time / 1000, '%m') AS changeMonth " +
            "FROM ams_asset_info_change WHERE " +
            "asset_id IN (${assetIdsStr}) " +
            "AND change_time >= #{startTime} " +
            "AND change_time <= #{endTime} " +
            "GROUP BY changeMonth;")
    List<ThisYearAssetChangeVo> thisYearAssetChange(@Param("assetIdsStr") String assetIdsStr,
                                                    @Param("startTime") Long startTime,
                                                    @Param("endTime") Long endTime);
}
